JIT 全称是 Just-In-Time,即在程序运行时(而不是预先)动态编译代码。起初,我曾误以为 JIT 就是热更新 HMR,但实际上两者并不相同。
1. JIT 模式的概念
JIT 的核心思想是 按需编译和生成资源,其特点如下:
- 按需生成:只为实际使用的类名生成样式,避免生成无用的样式规则。
- 性能优化:生成的 CSS 文件更小,加载更快。
- 动态生成:可以根据动态类名或自定义规则实时生成 CSS 规则。
2. JIT 模式与热更新的区别
热更新(HMR)是一种开发时的技术,允许在不刷新整个页面的情况下,实时替换、添加或移除模块(如组件、样式等),从而保持应用的状态。两者虽然具有实时性和动态性,但本质不同。
热更新(HMR)的核心特点:
- 状态保留:在修改代码的同时保留应用的当前状态,例如表单中的输入数据或选中的复选框。
- 提高开发效率:开发者可以实时看到代码变更的效果,而无需重启应用。
JIT 与 HMR 的区别:
- 用途不同:
- HMR 用于开发中保留状态,提高效率和用户体验。
- JIT 用于按需生成和优化资源。
- 实现不同:
- HMR 优化开发体验,避免中断开发。
- JIT 减少生成资源体积,确保只加载必要资源。
- 适用场景不同:
- HMR 适用于模块化框架(如 React、Vue、Angular)。
- JIT 应用于资源生成和构建阶段。
3. Tailwind CSS 中的 JIT 模式
虽然 JIT 并非 Tailwind CSS 独有,但 Tailwind 将其发扬光大,与传统的 CSS 构建方式相比,JIT 模式具有以下特别之处:
1. 按需生成 CSS
传统编译会生成所有样式(无论是否使用),而 JIT 只生成实际用到的样式。这不仅减少了 CSS 文件大小,还显著提高了加载和渲染速度。
2. 动态生成 CSS 类
JIT 不仅编译已写好的类名,还可以根据动态类名即时生成样式。例如:
html
<div class="text-[rgb(255,0,0)] bg-[url('/image.png')]">Hello</div>
Tailwind JIT 会动态解析并生成对应的 CSS 规则,而不需要预先配置。
3. 更快的热更新
JIT 仅在新增或修改类名时重新生成 CSS,因此构建速度更快,热更新响应也更迅速。
4. 极简配置
无需手动列出需要保留的类名,Tailwind 会自动识别代码中用到的类,减少了配置的复杂性。
5. 支持自定义功能
JIT 模式允许开发者动态添加自定义颜色、间距、字体等,进一步增强了灵活性和扩展能力。
4. 总结:JIT 模式的特别之处
Tailwind 的 JIT 模式在现代开发中具备以下优势:
按需生成样式,减少冗余,优化资源大小。
动态类名支持,适配灵活多变的需求。
高效的构建和热更新,显著提升开发效率。
简化配置与自定义,为开发者提供更多自由。
相比传统的静态编译模式,JIT 模式显然更适合动态变化频繁、对性能要求高的项目,是现代前端开发环境中的一大技术进步。